/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-16 ------------*
**********************************/

package net.kdh.knieja.dao.klasy;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import net.kdh.knieja.dao.klasy.sqlgenerator.ArtykulSqlGenerator;
import net.kdh.knieja.dao.polaczenie.DaneDostepuEnum;
import net.kdh.knieja.dao.polaczenie.ParametryPolaczenia;
import net.kdh.knieja.model.system.Artykul;
import net.kdh.knieja.model.system.Uzytkownik;
import net.kdh.knieja.model.wspolne.wyjatki.BladWarstwyDaoWyjatek;

/**
 *
 * @author rz.marcin@gmail.com
 */
public class ArtykulDAO extends KlasaDAO<Artykul> {

    public ArtykulDAO() {
        super(new ArtykulSqlGenerator());
        ParametryPolaczenia parametry = new ParametryPolaczenia();
        parametry.setDaneDostepu(DaneDostepuEnum.ARTYKULY);
        super.initConnection(parametry);
    }

    @Override
    protected List<Artykul> parseResultSet(ResultSet rs) throws BladWarstwyDaoWyjatek {
        List<Artykul> list = new ArrayList<>(0);
        try {
            for(int i = 0; rs.next(); i++) {
                String id, idAutora, tresc, tytul, dataUtworzenia;
                
                id = rs.getString("id_artykulu");
                idAutora = rs.getString("id_autora");
                tresc = new String(rs.getBlob("tresc").getBytes(1L, (int)rs.getBlob("tresc").length()));
                tytul = rs.getString("tytul");
                dataUtworzenia = rs.getString("data_utworzenia");
                list.add(new Artykul());
                list.get(i).setIdArtykulu(id);
                list.get(i).setTytul(tytul);
                list.get(i).setDataUtworzenia(Timestamp.valueOf(dataUtworzenia));
                list.get(i).setTresc(tresc);
                list.get(i).setAutor(new Uzytkownik());
                list.get(i).getAutor().setIdUzytkownika(idAutora);
            }
            rs.close();
        } catch (SQLException ex) {
            System.out.println("Błąd SQL" + "\n" + ex.getLocalizedMessage());
            throw new BladWarstwyDaoWyjatek("ArtykulDAO.parseResultSet()", ex);
        }
        return list;
    }
}
